package ww;

public class J19_Callby {

	// call by value vs call by reference(주소)
	// 값 이동시키기 swap
	// a = 3 , b = 5 --> swap(3,5) --> a = 5, b = 3
	
	public static void main(String[] args) {
		int a = 3, b = 5;   // 기본 자료형
		int[] aa = {3};		// 참조 자료형
		int[] bb = {5};
		System.out.println("swap 호출a : " + a + "b : " + b);
		System.out.println("swap 호출a : " + a + " b : " + b);
		swap(a,b);			// 기본 자료형
		swap(aa,bb);		// 참조 자료형
		System.out.println(a + "," + aa + "," + aa[0]);
		swap(aa[0],bb[0]);
		System.out.println("swap 호출전a :" + a + " b : " + b);
		System.out.println("swap 호출후aa :" + aa[0] + " bb : " + bb[0]);
	}
	
	static void swap(int x, int y){
		/*x = y;
		y = x;*/
		int tmp = x;
		x = y; 
		y = tmp; 
		
		System.out.println("swap 실행중 a : " + x +  " b :" + y);
	}

	static void swap(int[] x, int[] y){
	int tmp = x[0];
	x[0] = y[0];
	y[0] = tmp;
	System.out.println("swap 실행중 b :" + x[0] + " b : " + y[0]);
	}
	
	}

